package model_response

import "go-admin/internal/model"

type ListUserResponse struct {
	CommonId
	IsBanned string `json:"isBanned"` // 是否禁用
	Username string `json:"username"` // 登录名称
	Phone    string `json:"phone"`    // 手机号
	CommonCreatedOn
}

type UserDetailResponse struct {
	CommonId
	Username string   `json:"username"` // 登录名称
	Password string   `json:"password"` // 登录密码
	RealName string   `json:"realName"` // 真是姓名
	Phone    string   `json:"phone"`    // 手机号
	Avatar   string   `json:"avatar"`   // 头像地址
	Gender   string   `json:"gender"`   // 性别
	Email    string   `json:"email"`    // 邮箱
	DeptId   string   `json:"deptId"`   // 部门id
	JobId    string   `json:"jobId"`    // 岗位id
	IsBanned string   `json:"isBanned"` // 是否禁用
	Remark   string   `json:"remark"`   // 备注
	RoleIds  []string `json:"roleIds"`  // 角色id集合
}

// 返回用户基本信息
type UserInfo struct {
	RealName string   `json:"realName"` // 真是姓名
	Phone    string   `json:"phone"`    // 手机号
	Avatar   string   `json:"avatar"`   // 头像地址
	Gender   string   `json:"gender"`   // 性别
	Email    string   `json:"email"`    // 邮箱
	DeptName string   `json:"deptName"` // 部门名称
	JobName  string   `json:"jobName"`  // 岗位名称
	RoleKey  []string `json:"roleKey"`  // 角色key集合
}

func ModelToListUserRes(models []*model.User) []*ListUserResponse {
	var list []*ListUserResponse
	for _, m := range models {
		l := ListUserResponse{
			CommonId:        CommonId{m.Id},
			Username:        m.Username,
			Phone:           m.Phone,
			IsBanned:        m.IsBanned,
			CommonCreatedOn: CommonCreatedOn{CreatedOn: m.CreatedOn},
		}
		list = append(list, &l)
	}
	return list
}

func ModelToDetailUserRes(model *model.User, roleIds []string) *UserDetailResponse {
	user := &UserDetailResponse{
		CommonId: CommonId{Id: model.Id},
		Username: model.Username,
		Password: model.Password,
		RealName: model.RealName,
		Phone:    model.Phone,
		Avatar:   model.Avatar,
		Gender:   model.Gender,
		Email:    model.Email,
		DeptId:   model.DeptId,
		JobId:    model.JobId,
		IsBanned: model.IsBanned,
		Remark:   model.Remark,
		RoleIds:  roleIds,
	}
	return user
}
